<%--
  Created by IntelliJ IDEA.
  User: HelloKitty
  Date: 2021/5/17
  Time: 16:32
  To change this template use File | Settings | File Templates.
--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%-- SpringMVC表单标签：1、导入SpringMVC的form表单，标签库 --%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <%-- 用以说明主页制作所使用的文字以及语言 --%>
    <meta http-equiv="Content-Type" content="text/html" charset='UTF-8"'>
    <meta http-equiv="Content-Language" content="zh-CN">
    <title>员工添加</title>
</head>
<body>
<%-- SpringMVC表单标签：2、使用SpringMVC的表单标签 --%>
<%--
1）、SpringMVC认为，表单数据中的每一项最终都是要【回显】的
    path指定的是一个属性：这个属性从隐含模型（请求域中取出的某个对象中的属性）
    path指定的每一个属性：请求域中必须有一个对象拥有这个属性。
        这个对象就是请求域中的command

    modelAttribute="deptDefault"
        （1）以前表单标签会，从请求域中获取一个command对象，把这个对象中的每一个属性对应的显示在页面上
        （2）可以告诉SpringMVC，不要去取command的值了，要从modelAttribute指定的key中取值
 --%>
<%--
发送的请求地址：/emp	POST:添加员工
    我们使用 /项目地址/emp，【这样更换项目名也不会影响到项目】
--%>
<% pageContext.setAttribute("projectPath",request.getContextPath()); %>
<form:form action="${projectPath}/emp" modelAttribute="employee" method="post">
    <%--
        <form:input>标签的属性：
            path：就是原来的html-input的name选项
                  也还是modelAttribute="deptDefault"：指定的deptDefault在隐含模型model中绑定的，后端JavaBean对象中的属性
            path有两个作用：
                作用一：当做原来的html-input的name选项
                作用二：自动回显隐含模型中某个对象，对应的这个属性值
    --%>
    lastName：<form:input path="lastName" /><br/>
        &emsp;SpringMVC的<form表单标签>取出来的错误消息：<form:errors path="lastName" /><br/>
        &emsp;原生jsp的EL表达式取出来的错误消息：${requestScope.errorInfo.lastName}<br/>
    email：<form:input path="email" /><br/>
        &emsp;SpringMVC的<form表单标签>取出来的错误消息：<form:errors path="email" /><br/>
        &emsp;原生jsp的EL表达式取出来的错误消息：${errorInfo.email}<br/>
    gender：
        男：<form:radiobutton path="gender" value="1" />
        女：<form:radiobutton path="gender" value="0" /><br/>
    <%--09、SpringMVC数据的格式化
        1）、给页面增加birth属性，path="birth"
        2）、给SpringMVC绑定的javaBean添加birth属性
            JavaBean是：Employee，路径是：src/main/java/com/atguigu/bean/Employee.java
    --%>
    birth:<form:input path="birth" /><br/>
        &emsp;SpringMVC的<form表单标签>取出来的错误消息：<form:errors path="birth" /><br/>
        &emsp;原生jsp的EL表达式取出来的错误消息：${errorInfo.birth}<br/>
    部门：
    <%--
        items=""：指定要遍历的集合；SpringMVC的表单标签会自动遍历。自动遍历处每一个元素师一个department对象
        itemLabel="属性"：指定遍历出的这个对象的，哪一个属性作为<option>标签体的值
        itemValue="属性"：指定刚才遍历出的对象，哪个属性作为要提交的value值，也就是<option value="">
    --%>
        <form:select path="department.id" items="${depts}" itemLabel="departmentName" itemValue="id" /><br/>
    <%--原生的保存--%>
    <input type="submit" value="保存">
</form:form>

<%-- 原生方式

    <h1>员工添加</h1>
    &lt;%&ndash; 属性值和javaBean中的Employee一致 &ndash;%&gt;
    <form action="" method="post">
        &lt;%&ndash;展示信息&ndash;%&gt;
        lastName:<input name="lastName" type="text"><br/>
        email:<input name="email" type="text"><br/>
            &lt;%&ndash;属性：radio：单选框&ndash;%&gt;
        gender:
            男：<input name="gender" type="radio" value="1" />
            女：<input name="gender" type="radio" value="0" /><br/>
            &lt;%&ndash;下拉列表
                属性：
                    <select>：id：这个才是submit提交的key
                    <option>：value：这个才是submit提交的value
                    <option>方法体内，是我们展示的数据
            &ndash;%&gt;
        部门：<select id="department.id">
                <c:forEach items="${requestScope.depts}" var="dept">
                    <option value="${dept.id}">${dept.departmentName}</option>
                </c:forEach>
        </select><br/>
        <input type="submit" value="添加员工">
    </form>
--%>

</body>
</html>
